package com.smartcruise.util.pushUtil;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;

import com.smartcruise.MyApplication;
import com.smartcruise.R;
import com.smartcruise.base.FragmentActivitySimpleImp;
import com.smartcruise.main.MainActivity;
import com.smartcruise.task.newTask.NewTaskFragment;
import com.smartcruise.util.IntentUtils;
import com.smartcruise.util.TimeUtils;

import static android.content.Context.NOTIFICATION_SERVICE;

/**
 * Created by FengChaoQun
 * on 2018/3/5 0005
 */

public class NotificationUtils {

    public static final int TYPE_NEW_TASK = 1;
    public static final int TYPE_TASK_NOTICE = 2;
    public static final int TYPE_TASK_AUDITED = 3;
    public static final int TYPE_REPORT_AUDITED = 4;
    public static final int TYPE_BUG_NOTICE = 10;

    public static NotificationManager mNotificationManager = (NotificationManager)
            MyApplication.getInstance().getSystemService(NOTIFICATION_SERVICE);
    public static NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MyApplication.getInstance());

    /**
     * description:后台下发新任务通知
     */

    public static void showNewTaskNotification(String taskName, String taskId) {

        Intent intent = new Intent(MyApplication.getInstance(), MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.putExtra(IntentUtils.TYPE, TYPE_NEW_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), TYPE_NEW_TASK, intent, 0);

        mBuilder.setContentTitle("新任务通知")
                .setContentText(taskName)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setNumber(1)//显示数量
                .setTicker("新任务通知")//通知首次出现在通知栏，带上升动画效果的
                .setWhen(TimeUtils.currentTime())//通知产生的时间，会在通知信息里显示
                .setPriority(Notification.PRIORITY_HIGH)//设置该通知优先级
                .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
                .setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
                .setDefaults(Notification.DEFAULT_VIBRATE);//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合：

        mNotificationManager.notify(TYPE_NEW_TASK, mBuilder.build());
    }

    public static void showTaskAuditedNotification(String content, String taskId) {

        Intent intent = new Intent(MyApplication.getInstance(), MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.putExtra(IntentUtils.TYPE, TYPE_NEW_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), TYPE_TASK_AUDITED, intent, 0);

        mBuilder.setContentTitle("任务审核通知")
                .setContentText(content)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setNumber(1)//显示数量
                .setTicker("任务审核通知")//通知首次出现在通知栏，带上升动画效果的
                .setWhen(TimeUtils.currentTime())//通知产生的时间，会在通知信息里显示
                .setPriority(Notification.PRIORITY_HIGH)//设置该通知优先级
                .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
                .setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
                .setDefaults(Notification.DEFAULT_VIBRATE);//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合：

        mNotificationManager.notify(TYPE_NEW_TASK, mBuilder.build());
    }

    public static void showReportAuditedNotification(String content, String reportId) {

        Intent intent = new Intent(MyApplication.getInstance(), MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.putExtra(IntentUtils.TYPE, TYPE_NEW_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), TYPE_REPORT_AUDITED, intent, 0);

        mBuilder.setContentTitle("通报审核通知")
                .setContentText(content)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setNumber(1)//显示数量
                .setTicker("通报审核通知")//通知首次出现在通知栏，带上升动画效果的
                .setWhen(TimeUtils.currentTime())//通知产生的时间，会在通知信息里显示
                .setPriority(Notification.PRIORITY_HIGH)//设置该通知优先级
                .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
                .setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
                .setDefaults(Notification.DEFAULT_VIBRATE);//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合：

        mNotificationManager.notify(TYPE_NEW_TASK, mBuilder.build());
    }

    /**
     * description:任务即将开始通知
     */

    public static void showTaskNotification(String taskName) {

        Intent intent = new Intent(MyApplication.getInstance(), FragmentActivitySimpleImp.class);
        intent.putExtra(IntentUtils.TYPE, NewTaskFragment.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), TYPE_TASK_NOTICE, intent, 0);

        mBuilder.setContentTitle("任务通知")
                .setContentText(taskName)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setNumber(1)//显示数量
                .setTicker("任务即将需要执行")//通知首次出现在通知栏，带上升动画效果的
                .setWhen(TimeUtils.currentTime())//通知产生的时间，会在通知信息里显示
                .setPriority(Notification.PRIORITY_HIGH)//设置该通知优先级
                .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
                .setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
                .setDefaults(Notification.DEFAULT_VIBRATE);//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合：

        mNotificationManager.notify(TYPE_TASK_NOTICE, mBuilder.build());
    }

    /**
     * description:任务即将开始通知
     */

    public static void bugNotification(String bugContent) {

        Intent intent = new Intent(MyApplication.getInstance(), FragmentActivitySimpleImp.class);
        intent.putExtra(IntentUtils.TYPE, NewTaskFragment.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), TYPE_TASK_NOTICE, intent, 0);

        mBuilder.setContentTitle("异常通知,请及时反馈给管理员")
                .setContentText(bugContent)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setNumber(1)//显示数量
                .setTicker("异常通知")//通知首次出现在通知栏，带上升动画效果的
                .setWhen(TimeUtils.currentTime())//通知产生的时间，会在通知信息里显示
                .setPriority(Notification.PRIORITY_HIGH)//设置该通知优先级
                .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
                .setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
                .setDefaults(Notification.DEFAULT_VIBRATE);//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合：

        mNotificationManager.notify(TYPE_TASK_NOTICE, mBuilder.build());
    }
}
